package com.project;

import com.project.servlet.*;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Wrapper;
import org.apache.catalina.startup.Tomcat;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


/**
 * @author lyl
 * description:运行主类
 */
public class Main {
    /**
     * 加载配置类
     */
    private ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyBatisConfig.class);

    public Main() {
        //新创建tomcat对象
        Tomcat tomcat = new Tomcat();
        //将8088端口分配给tomcat
        tomcat.setPort(8088);
        //引导http引擎
        tomcat.getConnector();
        //创建上下文
        Context context = tomcat.addContext("", null);


        //进行servlet注册
        Wrapper wrapper = Tomcat.addServlet(context, "test", new TestServlet());
        //容器启动时完成初始化
        wrapper.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper.addMapping("/test");

        //进行servlet注册
        Wrapper wrapper1 = Tomcat.addServlet(context, "findAll", applicationContext.getBean(FindAllServlet.class));
        //容器启动时完成初始化
        wrapper1.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper1.addMapping("/findAll");

        //进行servlet注册
        Wrapper wrapper2 = Tomcat.addServlet(context, "add", applicationContext.getBean(AddServlet.class));
        //容器启动时完成初始化
        wrapper2.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper2.addMapping("/add");

        //进行servlet注册
        Wrapper wrapper3 = Tomcat.addServlet(context, "del", applicationContext.getBean(DelServlet.class));
        //容器启动时完成初始化
        wrapper3.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper3.addMapping("/del");

        //进行servlet注册
        Wrapper wrapper4 = Tomcat.addServlet(context, "findOne", applicationContext.getBean(FindOneServlet.class));
        //容器启动时完成初始化
        wrapper4.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper4.addMapping("/findOne");

        //进行servlet注册
        Wrapper wrapper5 = Tomcat.addServlet(context, "update", applicationContext.getBean(UpdateServlet.class));
        //容器启动时完成初始化
        wrapper5.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper5.addMapping("/update");


        //进行servlet注册
        Wrapper wrapper6 = Tomcat.addServlet(context, "em", applicationContext.getBean(EmpServlet.class));
        //容器启动时完成初始化
        wrapper6.setLoadOnStartup(1);
        //设置servlet的请求路径（精确匹配）
        wrapper6.addMapping("/em");

        try {
            //启动tomcat
            tomcat.start();
        } catch (LifecycleException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Main();
    }
}
